import datetime
import json
import re
import urllib

from taobao.extension import Link_database


def now_taobaonick_to_cn(nickname):
    """数据库中文解码"""
    c = urllib.parse.unquote(nickname)
    zhPattern = re.compile(u'[\u4e00-\u9fa5]+')
    match = zhPattern.search(c)
    user_nick = ''
    if match:
        user_nick = c
    else:
        user_nick = c.encode('utf-8').decode('unicode_escape')
    return user_nick


def userExpandRepeat(user_name):
    """ 用户可叠加信息查询 """
    DB, Cursor = Link_database()

    sql = """ select statdate,pay_status,online_contact_date,dl_date,feedback_record,chat_record from expand_repeat where user_name = '%s' """ % (
        user_name)
    Cursor.execute(sql)
    AttendanceData = Cursor.fetchall()
    statdateList = []
    pay_statusList = []
    online_contact_dateList = []
    dl_dateList = []
    feedback_recordList = []
    chat_recordList = []
    weekList = []

    now = datetime.datetime.now()
    this_week_start = str(now - datetime.timedelta(days=now.weekday())).split(" ")[0]
    this_week_end = str(now + datetime.timedelta(days=6 - now.weekday())).split(" ")[0]
    for ad in AttendanceData:

        if ad[0] != "None":
            statdateList.append(ad[0])
        if ad[1] != "None":
            pay_statusList.append(ad[1])
        if ad[2] != "None":
            if this_week_start <= ad[2] <= this_week_end:
                weekList.append(ad[2])
            online_contact_dateList.append(ad[2])
        if ad[3] != "None":
            if this_week_start <= ad[3] <= this_week_end:
                weekList.append(ad[3])
            dl_dateList.append(ad[3])
        if ad[4] != "None":
            feedback_recordList.append(ad[4])
        if ad[5] != "":
            chat_recordList.append(ad[5])

    DB.close()
    Cursor.close()
    return {"statdate": statdateList, "pay_status": pay_statusList, "online_contact_date": online_contact_dateList,
            "dl_date": dl_dateList, "feedback_record": feedback_recordList, "chat_record": chat_recordList,
            "week_lx": len(weekList), "history_lx": len(online_contact_dateList) + len(dl_dateList)}


def after_data(data):
    """后台系统数据组织"""

    result = []
    # for i in data:
    #     data = {}
    #     data['username'] = i[0]
    #     data['phone'] = i[1]
    #     data['taobaonick'] = parse.unquote(i[2]) if i[2] else '无记录'
    #     data['taobaonick'] = now_taobaonick_to_cn(i[2]) if i[2] else '无记录'
    #     data['last_login_time'] = i[3].strftime('%Y-%m-%d %H:%M:%S') if i[3] else '无记录'
    #     data['date_joined'] = i[4].strftime('%Y-%m-%d %H:%M:%S') if i[4] else '无记录'
    #     try:
    #         data['vip_date'] = i[5].strftime('%Y-%m-%d %H:%M:%S')
    #     except:
    #         data['vip_date'] = '无记录'
    #     data['vip_level'] = i[6] if i[6] else 0
    #     data['user_qq'] = i[7] if i[7] else '无记录'
    #     data['user_wx'] = i[8] if i[8] else '无记录'
    #
    #     result.append(data)
    for i in data:
        re = userExpandRepeat(i[1])
        a = {
            "id": i[0],
            "username": i[1],  # 账号名
            "personal": {"phone": i[2], "qq": i[8] if i[8] else '无记录', "wx": i[9] if i[9] else '无记录'},  # 个人信息
            "store": {"taobaonick": now_taobaonick_to_cn(i[3]) if i[3] else "无记录", "account": i[10] if i[10] else '无记录',
                      "pswd": i[11] if i[11] else '无记录'},  # 账户信息
            "times": {"last_login_time": i[4].strftime('%Y-%m-%d %H:%M:%S') if i[4] else '无记录',
                      "date_joined": i[5].strftime('%Y-%m-%d %H:%M:%S') if i[5] else '无记录',
                      "vip_date": i[6].strftime('%Y-%m-%d %H:%M:%S') if i[6] != "0000-00-00 00:00:00" and i[
                          6] else '无记录', "pay_date": i[12] if i[12] else '无记录'},  # 时间信息
            "vip_level": i[7] if i[7] else '无记录',  # vip等级
            "is_diagnosis": i[13] if i[13] else '无记录',  # 诊断
            "landing_times": i[14] if i[14] else '无记录',  # 登陆次数
            "history_lx": re["history_lx"],
            "week_lx": re["week_lx"],
            "online_contact_date": re["online_contact_date"],
            "feedback_record": re["feedback_record"],
            "pay_status": re["pay_status"],
            "statdate": re["statdate"],
            "chat_record": re["chat_record"],
            "dl_date": re["dl_date"]
        }
        result.append(a)

    return result


def crowd_portrait_place(data):
    """人群画像数据处理"""
    data_str = json.dumps(data)
    c_data_str = re.sub(r'\.\d+', '', data_str)
    data_dict = json.loads(c_data_str)
    gender_data = crowd_gender(data_dict)  # 性别数据
    age_data = crowd_age(data_dict)  # 年龄数据
    city_data = crowd_city(data_dict)  # 城市数据
    return {'gender': gender_data, 'age': age_data, "city": city_data}


def gender_completion(data):
    """性别补全"""
    nv_data = {'value': 0.0, 'key': '女'}
    na_data = {'value': 0.0, 'key': '男'}
    wei_data = {'value': 0.0, 'key': '未知'}
    for i in data:
        if i['key'] == '女':
            nv_data['value'] = i['value']
        elif i['key'] == '男':
            na_data['value'] = i['value']
        else:
            wei_data['value'] = i['value']
    datas = [nv_data, na_data, wei_data]

    return datas


def age_completion(data):
    """年龄补全"""
    data_2 = {'value': 0.0, 'key': '2'}
    data_3 = {'value': 0.0, 'key': '3'}
    data_4 = {'value': 0.0, 'key': '4'}
    data_5 = {'value': 0.0, 'key': '5'}
    data_6 = {'value': 0.0, 'key': '6'}
    data_7 = {'value': 0.0, 'key': '7'}
    for i in data:
        if i['key'] == '2':
            data_2['value'] = i['value']
        elif i['key'] == '3':
            data_3['value'] = i['value']
        elif i['key'] == '4':
            data_4['value'] = i['value']
        elif i['key'] == '5':
            data_5['value'] = i['value']
        elif i['key'] == '6':
            data_6['value'] = i['value']
        elif i['key'] == '7':
            data_7['value'] = i['value']
    datas = [data_2, data_3, data_4, data_5, data_6, data_7]

    return datas


def round_s(sum, num):
    """保留位数"""
    n = '%0.{}f'.format(num) % (sum)
    return n


def variance(arr):
    """方差"""
    ave = average(arr)
    amount = 0
    arr_len = len(arr)
    for el in arr:
        amount += (float(el) - ave) ** 2
    return amount / arr_len


def average(arr):
    """平均数"""
    ave = 0
    arr_len = len(arr)
    for el in arr:
        ave += float(el)
    return ave / arr_len


def reliability(ave_list, relia_list):
    """重叠度"""
    # effective_rate = []  # 重叠数
    # i = 0
    # while i < 10:
    #     effective_rate.append(ave_list[i] * relia_list[i])
    #     i += 1

    effective_rate = ave_list * relia_list

    return effective_rate


def gender_data_finishing(keyword, women, male, unknown, sum, women_rate, women_rate_un, male_rate, male_rate_un, relia,
                          women_effective, male_effective, variance_list):
    """性别数据整理"""
    data = []
    i = 0
    while i < len(keyword):
        a = [keyword[i], women[i], male[i], unknown[i], sum[i], round_s(women_rate[i], 4), round_s(women_rate_un[i], 4),
             round_s(male_rate[i], 4),
             round_s(male_rate_un[i], 4), round_s(relia[i], 4)]
        data.append(a)
        i += 1
    data_dict = {
        "base": data,
        "variance": variance_list,
        "rate_ave": [round_s(women_effective, 8), round_s(male_effective, 8)]
    }
    # data.append([round_s(women_effective, 4), round_s(male_effective, 4)])
    return data_dict


def age_data_finishing(keyword, age_18_24, age_25_29, age_30_34, age_35_39, age_40_49, age_50, key_number_list,
                       age_18_24_rate, age_25_29_rate, age_30_34_rate, age_35_39_rate, age_40_49_rate, age_50_rate,
                       key_rate, rate_ave, var_list, var_ave):
    """年龄数据整理"""
    data = []
    i = 0
    while i < len(keyword):
        a = [keyword[i], age_18_24[i], age_25_29[i], age_30_34[i], age_35_39[i], age_40_49[i], age_50[i],
             key_number_list[i], round_s(key_rate[i], 4),
             round_s(age_18_24_rate[i], 4), round_s(age_25_29_rate[i], 4), round_s(age_30_34_rate[i], 4),
             round_s(age_35_39_rate[i], 4), round_s(age_40_49_rate[i], 4), round_s(age_50_rate[i], 4)]
        data.append(a)
        i += 1
    # data.append(num_rate)
    data_dict = {
        "base": data,
        "variance": var_list,
        "all_variance": var_ave[0],
        "rate_ave": rate_ave
    }

    return data_dict


def city_data_finishing(TenKeyword, all_city, Li, City_Rete, variance_list, city_reat_cariance):
    """城市数据整理"""

    TenKeyword.append('城市平均值')
    TenKeyword.append('方差')
    TenKeyword.insert(0, '城市')
    q, w, e, r, t, y, u, z, o, p = Li
    data = []
    i = 0
    while i < len(all_city):
        a = [all_city[i], q[i], w[i], e[i], r[i], t[i], y[i], u[i], z[i], o[i], p[i], City_Rete[i], variance_list[i]]
        data.append(a)
        i += 1

    data_dict = {
        "base": data,
        "keyword": TenKeyword,
        "city_rate": city_reat_cariance
    }
    return data_dict


def crowd_gender(data):
    """性别数据计算"""
    male = []  # 男性
    women = []  # 女性
    unknown = []  # 未知
    sum = []  # 总和
    keyword = []  # 关键词
    women_number = 0  # 女性总人数
    male_number = 0  # 男性总人数
    unknown_number = 0  # 未知总人数
    sum_number = 0  # 总人数
    for data_list_1 in data:
        for data_dict_1 in data_list_1:
            number = 0  # 人数和
            data_1 = gender_completion(data_dict_1['gender'])
            for i in data_1:
                sum_number += i['value']
                number += i['value']
                if i['key'] == '女':
                    women.append(i['value'])
                    women_number += i['value']
                elif i['key'] == '男':
                    male.append(i['value'])
                    male_number += i['value']
                elif i['key'] == '未知':
                    unknown.append(i['value'])
                    unknown_number += i['value']
            sum.append(number)
            keyword.append(data_dict_1['keyword'])

    women_number_rate = women_number / sum_number  # 女性总数占比
    women_number_un_rate = (women_number + unknown_number) / sum_number  # 女性 + 未知 总数占比
    male_number_rate = male_number / sum_number  # 男性总数占比
    male_number_un_rate = (male_number + unknown_number) / sum_number  # 男性 + 未知 总数占比
    relia_sum = (male_number + women_number) / sum_number  # 总人数可靠度

    women_rate = []  # 女性占比值
    women_rate_un = []  # 女性加未知占比值
    male_rate = []  # 男性占比值
    male_rate_un = []  # 男性加未知占比值
    relia = []  # 可靠度
    n = 0
    while n < len(keyword):
        if sum[n]:
            women_rate.append(women[n] / sum[n])
            women_rate_un.append((women[n] + unknown[n]) / sum[n])
            relia.append((women[n] + male[n]) / sum[n])
            male_rate.append(male[n] / sum[n])
            male_rate_un.append((male[n] + unknown[n]) / sum[n])
        else:
            women_rate.append(0)
            women_rate_un.append(0)
            relia.append(0)
            male_rate.append(0)
            male_rate_un.append(0)
        n += 1

    women_ratio_1 = variance(women_rate)  # 女性方差
    women_ratio_2 = variance(women_rate_un)  # 女性+未知方差
    male_rate_1 = variance(male_rate)  # 男性方差
    male_rate_2 = variance(male_rate_un)  # 男性+未知方差
    variance_list = [round_s(women_ratio_1, 8), round_s(women_ratio_2, 8), round_s(male_rate_1, 8),
                     round_s(male_rate_2, 8)]

    if women_ratio_1 > women_ratio_2:
        women_effective = reliability(women_number_un_rate, relia_sum)  # 女性重合度
    else:
        women_effective = reliability(women_number_rate, relia_sum)
    if male_rate_1 > male_rate_2:
        male_effective = reliability(male_number_un_rate, relia_sum)  # 男性重合度
    else:
        male_effective = reliability(male_number_rate, relia_sum)

    finishing_data = gender_data_finishing(keyword, women, male, unknown, sum, women_rate, women_rate_un, male_rate,
                                           male_rate_un, relia, women_effective, male_effective, variance_list)

    return finishing_data


def crowd_age(data):
    """年龄数据计算"""
    keyword = []  # 关键词列表
    age_18_24 = []  # 18-24 人数列表
    age_25_29 = []  # 25-29 人数列表
    age_30_34 = []  # 30-34 人数列表
    age_35_39 = []  # 35-39 人数列表
    age_40_49 = []  # 40-49 人数列表
    age_50 = []  # 50 人数列表
    key_number_list = []  # 关键词人数和列表
    age_18_24_sum = 0  # 18-24人数总和
    age_25_29_sum = 0  # 25_29人数总和
    age_30_34_sum = 0  # 30_34人数总和
    age_35_39_sum = 0  # 35_39人数总和
    age_40_49_sum = 0  # 40_49人数总和
    age_50_sum = 0  # 50人数总和
    sum_number = 0  # 总人数
    for data_list_1 in data:
        for data_dict_1 in data_list_1:
            keyword.append(data_dict_1['keyword'])
            key_number = 0  # 关键词人数和
            data_1 = age_completion(data_dict_1['age'])
            for i in data_1:
                sum_number += i['value']
                key_number += i['value']
                if i['key'] == '2':
                    age_18_24.append(i['value'])
                    age_18_24_sum += i['value']
                elif i['key'] == '3':
                    age_25_29.append(i['value'])
                    age_25_29_sum += i['value']
                elif i['key'] == '4':
                    age_30_34.append(i['value'])
                    age_30_34_sum += i['value']
                elif i['key'] == '5':
                    age_35_39.append(i['value'])
                    age_35_39_sum += i['value']
                elif i['key'] == '6':
                    age_40_49.append(i['value'])
                    age_40_49_sum += i['value']
                elif i['key'] == '7':
                    age_50.append(i['value'])
                    age_50_sum += i['value']
            key_number_list.append(key_number)

    key_rate = []  # 关键词人数占比
    for n in key_number_list:
        key_rate.append(n / sum_number)

    a = [age_18_24_sum, age_25_29_sum, age_30_34_sum, age_35_39_sum, age_40_49_sum, age_50_sum]
    num_rate = []  # 年龄段占比
    for m in a:
        num_rate.append(round_s(m / sum_number, 4))

    age_18_24_rate = []  # 18-24关键词中人数占比
    age_25_29_rate = []  # 18-24关键词中人数占比
    age_30_34_rate = []  # 18-24关键词中人数占比
    age_35_39_rate = []  # 18-24关键词中人数占比
    age_40_49_rate = []  # 18-24关键词中人数占比
    age_50_rate = []  # 18-24关键词中人数占比
    x = 0
    while x < len(keyword):
        if key_number_list[x]:
            age_18_24_rate.append(age_18_24[x] / key_number_list[x])
            age_25_29_rate.append(age_25_29[x] / key_number_list[x])
            age_30_34_rate.append(age_30_34[x] / key_number_list[x])
            age_35_39_rate.append(age_35_39[x] / key_number_list[x])
            age_40_49_rate.append(age_40_49[x] / key_number_list[x])
            age_50_rate.append(age_50[x] / key_number_list[x])
        else:
            age_18_24_rate.append(0)
            age_25_29_rate.append(0)
            age_30_34_rate.append(0)
            age_35_39_rate.append(0)
            age_40_49_rate.append(0)
            age_50_rate.append(0)
        x += 1

    rate_ave = []  # 占比平均值
    rate_ave.append(round_s(average(age_18_24_rate), 4))
    rate_ave.append(round_s(average(age_25_29_rate), 4))
    rate_ave.append(round_s(average(age_30_34_rate), 4))
    rate_ave.append(round_s(average(age_35_39_rate), 4))
    rate_ave.append(round_s(average(age_40_49_rate), 4))
    rate_ave.append(round_s(average(age_50_rate), 4))

    age_18_24_var = round_s(variance(age_18_24_rate), 8)  # 18-24方差
    age_25_29_var = round_s(variance(age_25_29_rate), 8)  # 25_29方差
    age_30_34_var = round_s(variance(age_30_34_rate), 8)  # 30_34方差
    age_35_39_var = round_s(variance(age_35_39_rate), 8)  # 35_39方差
    age_40_49_var = round_s(variance(age_40_49_rate), 8)  # 40_49方差
    age_50_var = round_s(variance(age_50_rate), 8)  # 50方差
    var_list = [age_18_24_var, age_25_29_var, age_30_34_var, age_35_39_var, age_40_49_var, age_50_var]
    var_ave = [
        round_s((float(age_18_24_var) + float(age_25_29_var) + float(age_30_34_var) + float(age_35_39_var) + float(
            age_40_49_var) + float(age_50_var)) / 6, 8)]

    c_data = age_data_finishing(keyword, age_18_24, age_25_29, age_30_34, age_35_39, age_40_49, age_50, key_number_list,
                                age_18_24_rate, age_25_29_rate, age_30_34_rate, age_35_39_rate, age_40_49_rate,
                                age_50_rate, key_rate, rate_ave,
                                var_list, var_ave)

    return c_data


def crowd_city(data):
    # 处理不重复市的列表
    TenKeyword = []  # 关键词
    all_city = []  # 所有城市
    for Keyword in data:
        TenKeyword.append(Keyword[0]['keyword'])
        for city in Keyword[0]['city']:
            all_city.append(city['key'])
    all_city = list(set(all_city))

    # 每个词的城市总和的数据处理
    KeywordCityData = []
    for Keyword in data:
        KeywordcCity = []
        city_keyword = []
        for find_city in Keyword[0]['city']:
            KeywordcCity.append(find_city['key'])
        for city in all_city:
            if city in KeywordcCity:
                for k in Keyword[0]['city']:
                    if k['key'] == city:
                        city_keyword.append(k)
            else:
                city_keyword.append({
                    'value': 0,
                    'key': city
                })
        KeywordCityData.append(city_keyword)

    # 计算每个词交易指数总和
    KeywordCitySum = []  # 关键词 总和
    for Keywrod in KeywordCityData:
        key_sum = 0
        for KeywordData in Keywrod:
            key_sum += KeywordData['value']
        KeywordCitySum.append(key_sum)

    # 方案1
    ## 计算每个词每个城市的占比
    Li = []
    # for KeywordSum in KeywordCitySum:
    i = 0
    for keywordsdata in KeywordCityData:
        KeywrodData = []
        for k in keywordsdata:
            if KeywordCitySum[i]:
                KeywrodData.append(round_s(k['value'] / KeywordCitySum[i], 4))
            else:
                KeywrodData.append(round_s(0.0000, 4))
        i = i + 1
        Li.append(KeywrodData)
    # # 城市占比平均值
    variance_list = []  # 城市方差
    City_Rete = []  # 城市平均数

    for q, w, e, r, t, y, u, i, o, p in zip(Li[0], Li[1], Li[2], Li[3], Li[4], Li[5], Li[6], Li[7], Li[8], Li[9]):
        Rete = (float(q) + float(w) + float(e) + float(r) + float(t) + float(y) + float(u) + float(i) + float(
            o) + float(p)) / len(TenKeyword)
        City_Rete.append(round_s(Rete, 4))
        variance_list.append(round_s(variance([q, w, e, r, t, y, u, i, o, p]), 8))

    city_reat_cariance = round_s(average(variance_list), 8)  # 城市方差平均数

    c_data = city_data_finishing(TenKeyword, all_city, Li, City_Rete, variance_list, city_reat_cariance)

    return c_data


if __name__ == '__main__':
    data = [
        [{
            'keyword': '指甲贴片 美甲成品',
            'gender': [{
                'value': 77546.44337703029,
                'key': '女'
            }, {
                'value': 21309.43990537525,
                'key': '男'
            }, {
                'value': 6092.12423731454,
                'key': '未知'
            }],
            'city': [{
                'value': 13953.376822112285,
                'key': '杭州市'
            }, {
                'value': 13329.996299725437,
                'key': '成都市'
            }, {
                'value': 12565.345559386878,
                'key': '深圳市'
            }, {
                'value': 12142.155954283278,
                'key': '上海市'
            }, {
                'value': 11104.172874028718,
                'key': '广州市'
            }, {
                'value': 10966.78365767903,
                'key': '北京市'
            }, {
                'value': 10071.87748861256,
                'key': '重庆市'
            }, {
                'value': 9517.281547003833,
                'key': '长沙市'
            }, {
                'value': 9260.107001224964,
                'key': '贵阳市'
            }, {
                'value': 9132.883803777662,
                'key': '东莞市'
            }, {
                'value': 8944.15914864573,
                'key': '昆明市'
            }, {
                'value': 8814.480223915347,
                'key': '武汉市'
            }, {
                'value': 8276.808942153986,
                'key': '苏州市'
            }, {
                'value': 8249.51001335718,
                'key': '南京市'
            }, {
                'value': 8075.333592370993,
                'key': '郑州市'
            }, {
                'value': 7582.43294648107,
                'key': '西安市'
            }, {
                'value': 7300.619124497093,
                'key': '合肥市'
            }, {
                'value': 6953.7748374858365,
                'key': '福州市'
            }, {
                'value': 6743.346627251725,
                'key': '南宁市'
            }, {
                'value': 6638.221842134546,
                'key': '济南市'
            }, {
                'value': 6514.856984145985,
                'key': '南昌市'
            }, {
                'value': 6347.263979143054,
                'key': '佛山市'
            }, {
                'value': 6021.313739943646,
                'key': '天津市'
            }, {
                'value': 5751.807856847365,
                'key': '厦门市'
            }, {
                'value': 5681.1314703224325,
                'key': '青岛市'
            }, {
                'value': 5606.413048497393,
                'key': '哈尔滨市'
            }, {
                'value': 5586.995192463975,
                'key': '乌鲁木齐市'
            }, {
                'value': 5447.329976630156,
                'key': '宁波市'
            }, {
                'value': 5208.442013143558,
                'key': '海口市'
            }, {
                'value': 5165.603571262529,
                'key': '兰州市'
            }],
            'age': [{
                'value': 46102.1025332882,
                'key': '2'
            }, {
                'value': 37245.71752806018,
                'key': '3'
            }, {
                'value': 28778.620757517485,
                'key': '4'
            }, {
                'value': 23115.274322879333,
                'key': '5'
            }, {
                'value': 20499.931757362705,
                'key': '6'
            }, {
                'value': 7475.708465135732,
                'key': '7'
            }]
        }],
        [{
            'keyword': '穿戴美甲 女',
            'gender': [{
                'value': 40973.07423349828,
                'key': '女'
            }, {
                'value': 12160.909053106576,
                'key': '男'
            }, {
                'value': 2659.05863418998,
                'key': '未知'
            }],
            'city': [{
                'value': 6504.496467869813,
                'key': '北京市'
            }, {
                'value': 6325.186381294549,
                'key': '成都市'
            }, {
                'value': 5853.302879576175,
                'key': '杭州市'
            }, {
                'value': 5276.213700309845,
                'key': '上海市'
            }, {
                'value': 5083.575586453011,
                'key': '重庆市'
            }, {
                'value': 4911.191720377615,
                'key': '广州市'
            }, {
                'value': 4894.996708627517,
                'key': '深圳市'
            }, {
                'value': 4634.513870788176,
                'key': '西安市'
            }, {
                'value': 4605.4162767457465,
                'key': '南京市'
            }, {
                'value': 4457.50363509115,
                'key': '贵阳市'
            }, {
                'value': 4407.404557947286,
                'key': '哈尔滨市'
            }, {
                'value': 4353.013068796734,
                'key': '郑州市'
            }, {
                'value': 4260.731341903588,
                'key': '合肥市'
            }, {
                'value': 4242.603126467978,
                'key': '武汉市'
            }, {
                'value': 3935.2553275604478,
                'key': '昆明市'
            }, {
                'value': 3794.606190812324,
                'key': '天津市'
            }, {
                'value': 3746.940833295478,
                'key': '太原市'
            }, {
                'value': 3708.31699905969,
                'key': '苏州市'
            }, {
                'value': 3586.643450269038,
                'key': '长沙市'
            }, {
                'value': 3447.6933099014504,
                'key': '济南市'
            }, {
                'value': 3395.1601435941266,
                'key': '乌鲁木齐市'
            }, {
                'value': 3274.135413786681,
                'key': '沈阳市'
            }, {
                'value': 3243.7583420435317,
                'key': '东莞市'
            }, {
                'value': 3177.917266602749,
                'key': '佛山市'
            }, {
                'value': 3097.491958151618,
                'key': '宁波市'
            }, {
                'value': 3088.792455131965,
                'key': '南宁市'
            }, {
                'value': 2987.6678581503065,
                'key': '石家庄市'
            }, {
                'value': 2969.352112738224,
                'key': '兰州市'
            }, {
                'value': 2961.8889660783543,
                'key': '长春市'
            }, {
                'value': 2872.0845751542533,
                'key': '青岛市'
            }],
            'age': [{
                'value': 22532.330378563893,
                'key': '2'
            }, {
                'value': 19128.006965827226,
                'key': '3'
            }, {
                'value': 16127.071388737237,
                'key': '4'
            }, {
                'value': 13254.921486965033,
                'key': '5'
            }, {
                'value': 12809.295521528897,
                'key': '6'
            }, {
                'value': 4172.187693966032,
                'key': '7'
            }]
        }],
        [{
            'keyword': '指甲贴女',
            'gender': [{
                'value': 55212.42818626706,
                'key': '女'
            }, {
                'value': 12538.480058385154,
                'key': '男'
            }, {
                'value': 6644.9528684618335,
                'key': '未知'
            }],
            'city': [{
                'value': 9365.190037675216,
                'key': '成都市'
            }, {
                'value': 8956.58121841928,
                'key': '上海市'
            }, {
                'value': 8765.660211529415,
                'key': '杭州市'
            }, {
                'value': 8703.610129946861,
                'key': '深圳市'
            }, {
                'value': 7715.864912857618,
                'key': '北京市'
            }, {
                'value': 7587.796751780146,
                'key': '广州市'
            }, {
                'value': 6985.062826502595,
                'key': '贵阳市'
            }, {
                'value': 6978.823281628343,
                'key': '重庆市'
            }, {
                'value': 6684.375455705896,
                'key': '长沙市'
            }, {
                'value': 6283.194049058448,
                'key': '武汉市'
            }, {
                'value': 6047.277019808424,
                'key': '南京市'
            }, {
                'value': 5944.060640983372,
                'key': '东莞市'
            }, {
                'value': 5803.288934581816,
                'key': '合肥市'
            }, {
                'value': 5725.597932826582,
                'key': '苏州市'
            }, {
                'value': 5501.680494137817,
                'key': '昆明市'
            }, {
                'value': 5399.129396716609,
                'key': '西安市'
            }, {
                'value': 5390.0459811706,
                'key': '郑州市'
            }, {
                'value': 4785.937302886943,
                'key': '厦门市'
            }, {
                'value': 4776.778955164983,
                'key': '济南市'
            }, {
                'value': 4629.606675208523,
                'key': '佛山市'
            }, {
                'value': 4538.987091171542,
                'key': '南宁市'
            }, {
                'value': 4271.674141860138,
                'key': '天津市'
            }, {
                'value': 4208.089018758453,
                'key': '福州市'
            }, {
                'value': 4047.019002736173,
                'key': '南昌市'
            }, {
                'value': 3953.536179330885,
                'key': '沈阳市'
            }, {
                'value': 3949.9216571578336,
                'key': '香港特别行政区'
            }, {
                'value': 3781.573165853284,
                'key': '青岛市'
            }, {
                'value': 3678.426992159658,
                'key': '石家庄市'
            }, {
                'value': 3562.7094212309976,
                'key': '泉州市'
            }, {
                'value': 3451.602909185316,
                'key': '海口市'
            }],
            'age': [{
                'value': 34098.18730006895,
                'key': '2'
            }, {
                'value': 25635.03135523057,
                'key': '3'
            }, {
                'value': 19055.93283686131,
                'key': '4'
            }, {
                'value': 15215.623373673872,
                'key': '5'
            }, {
                'value': 13885.97210311731,
                'key': '6'
            }, {
                'value': 5325.267667632251,
                'key': '7'
            }]
        }],
        [{
            'keyword': '美甲贴',
            'gender': [{
                'value': 51587.43077205581,
                'key': '女'
            }, {
                'value': 12868.731752026637,
                'key': '男'
            }, {
                'value': 4896.084649093739,
                'key': '未知'
            }],
            'city': [{
                'value': 9692.1435365691,
                'key': '北京市'
            }, {
                'value': 9476.444207264525,
                'key': '上海市'
            }, {
                'value': 8768.564050596862,
                'key': '杭州市'
            }, {
                'value': 7645.968282286998,
                'key': '南京市'
            }, {
                'value': 7202.04964555105,
                'key': '武汉市'
            }, {
                'value': 6638.597430879117,
                'key': '广州市'
            }, {
                'value': 6490.2888930995505,
                'key': '成都市'
            }, {
                'value': 6486.696414962296,
                'key': '深圳市'
            }, {
                'value': 6221.9263265548625,
                'key': '天津市'
            }, {
                'value': 6060.8289231700455,
                'key': '郑州市'
            }, {
                'value': 5722.771415226849,
                'key': '贵阳市'
            }, {
                'value': 5688.617380380218,
                'key': '福州市'
            }, {
                'value': 5450.5842837751425,
                'key': '苏州市'
            }, {
                'value': 5316.480182724405,
                'key': '昆明市'
            }, {
                'value': 5047.906003423843,
                'key': '沈阳市'
            }, {
                'value': 4841.836706042779,
                'key': '合肥市'
            }, {
                'value': 4811.958247367384,
                'key': '长沙市'
            }, {
                'value': 4773.0784837650845,
                'key': '西安市'
            }, {
                'value': 4706.341517518915,
                'key': '济南市'
            }, {
                'value': 4524.9182678169755,
                'key': '青岛市'
            }, {
                'value': 4369.1375885262005,
                'key': '重庆市'
            }, {
                'value': 4161.231462008726,
                'key': '东莞市'
            }, {
                'value': 3965.9469922457533,
                'key': '哈尔滨市'
            }, {
                'value': 3851.165683989524,
                'key': '太原市'
            }, {
                'value': 3740.75313586815,
                'key': '厦门市'
            }, {
                'value': 3660.529588172514,
                'key': '石家庄市'
            }, {
                'value': 3404.8553092996963,
                'key': '南昌市'
            }, {
                'value': 3362.4459259923497,
                'key': '长春市'
            }, {
                'value': 3359.540844583893,
                'key': '佛山市'
            }, {
                'value': 3342.183095518268,
                'key': '乌鲁木齐市'
            }],
            'age': [{
                'value': 33307.149618050316,
                'key': '2'
            }, {
                'value': 23743.811729918187,
                'key': '3'
            }, {
                'value': 17657.03898554821,
                'key': '4'
            }, {
                'value': 13025.74959758489,
                'key': '5'
            }, {
                'value': 12766.262114867664,
                'key': '6'
            }, {
                'value': 4434.91947889379,
                'key': '7'
            }]
        }],
        [{
            'keyword': '其他',
            'gender': [{
                'value': 0.0,
                'key': '男'
            }],
            'city': [{
                'value': 0.0,
                'key': '杭州市'
            }],
            'age': [{
                'value': 0.0,
                'key': '4'
            }]
        }],
        [{
            'keyword': '指甲贴',
            'gender': [{
                'value': 56133.58253055063,
                'key': '女'
            }, {
                'value': 13322.296880604477,
                'key': '男'
            }, {
                'value': 7866.959916321068,
                'key': '未知'
            }],
            'city': [{
                'value': 11339.020590824455,
                'key': '北京市'
            }, {
                'value': 11231.896443274443,
                'key': '上海市'
            }, {
                'value': 10013.553524120125,
                'key': '杭州市'
            }, {
                'value': 9031.37430095826,
                'key': '深圳市'
            }, {
                'value': 8808.33953062189,
                'key': '成都市'
            }, {
                'value': 8747.294963403956,
                'key': '广州市'
            }, {
                'value': 7243.026500562241,
                'key': '重庆市'
            }, {
                'value': 6214.343442753729,
                'key': '南京市'
            }, {
                'value': 5951.602838586841,
                'key': '武汉市'
            }, {
                'value': 5835.788517267007,
                'key': '昆明市'
            }, {
                'value': 5807.519490675251,
                'key': '长沙市'
            }, {
                'value': 5610.910039312561,
                'key': '青岛市'
            }, {
                'value': 5596.526169978023,
                'key': '郑州市'
            }, {
                'value': 5534.451071483825,
                'key': '合肥市'
            }, {
                'value': 5496.480012434073,
                'key': '济南市'
            }, {
                'value': 5389.7483302177925,
                'key': '贵阳市'
            }, {
                'value': 5342.695268078407,
                'key': '苏州市'
            }, {
                'value': 5243.689376920062,
                'key': '东莞市'
            }, {
                'value': 5193.525045492055,
                'key': '南宁市'
            }, {
                'value': 5154.092082082789,
                'key': '西安市'
            }, {
                'value': 4849.225267628233,
                'key': '厦门市'
            }, {
                'value': 4808.0258972194115,
                'key': '福州市'
            }, {
                'value': 4714.5852042922115,
                'key': '香港特别行政区'
            }, {
                'value': 4636.374695641276,
                'key': '天津市'
            }, {
                'value': 4505.703703299425,
                'key': '沈阳市'
            }, {
                'value': 4505.343756863312,
                'key': '佛山市'
            }, {
                'value': 4286.622174360438,
                'key': '哈尔滨市'
            }, {
                'value': 3927.4741984961756,
                'key': '南昌市'
            }, {
                'value': 3779.276762357742,
                'key': '无锡市'
            }, {
                'value': 3715.3618934464316,
                'key': '宁波市'
            }],
            'age': [{
                'value': 34671.97774245965,
                'key': '2'
            }, {
                'value': 28084.982102642265,
                'key': '3'
            }, {
                'value': 20010.227681700897,
                'key': '4'
            }, {
                'value': 13654.840190145482,
                'key': '5'
            }, {
                'value': 14211.168136916098,
                'key': '6'
            }, {
                'value': 4521.846746286612,
                'key': '7'
            }]
        }],
        [{
            'keyword': '穿戴美甲',
            'gender': [{
                'value': 27562.860731079974,
                'key': '女'
            }, {
                'value': 9837.91894985784,
                'key': '男'
            }, {
                'value': 1428.6035661423589,
                'key': '未知'
            }],
            'city': [{
                'value': 6542.40490937674,
                'key': '合肥市'
            }, {
                'value': 5019.8201694199315,
                'key': '北京市'
            }, {
                'value': 3750.841375042375,
                'key': '杭州市'
            }, {
                'value': 3666.727202100883,
                'key': '广州市'
            }, {
                'value': 3639.2126376937053,
                'key': '深圳市'
            }, {
                'value': 3631.8560701485912,
                'key': '西安市'
            }, {
                'value': 3549.2447885025754,
                'key': '成都市'
            }, {
                'value': 3502.752002902833,
                'key': '上海市'
            }, {
                'value': 2956.267765145032,
                'key': '武汉市'
            }, {
                'value': 2922.087988697205,
                'key': '昆明市'
            }, {
                'value': 2898.9290251497587,
                'key': '郑州市'
            }, {
                'value': 2894.3972677870947,
                'key': '哈尔滨市'
            }, {
                'value': 2804.376669913451,
                'key': '南京市'
            }, {
                'value': 2759.4973544615364,
                'key': '济南市'
            }, {
                'value': 2690.7400880845375,
                'key': '重庆市'
            }, {
                'value': 2644.1004045625036,
                'key': '南宁市'
            }, {
                'value': 2602.2723401213716,
                'key': '苏州市'
            }, {
                'value': 2455.1221719565365,
                'key': '贵阳市'
            }, {
                'value': 2349.3232487865575,
                'key': '天津市'
            }, {
                'value': 2206.5942259554677,
                'key': '沈阳市'
            }, {
                'value': 2196.432709836215,
                'key': '乌鲁木齐市'
            }, {
                'value': 2177.5209463082133,
                'key': '青岛市'
            }, {
                'value': 2174.403309725637,
                'key': '长沙市'
            }, {
                'value': 2164.1347882670357,
                'key': '金华市'
            }, {
                'value': 2069.8334617600567,
                'key': '大连市'
            }, {
                'value': 2005.4461570719254,
                'key': '长春市'
            }, {
                'value': 1936.1831318647746,
                'key': '石家庄市'
            }, {
                'value': 1886.7013810358003,
                'key': '温州市'
            }, {
                'value': 1879.1612465008725,
                'key': '徐州市'
            }, {
                'value': 1764.8135647367094,
                'key': '佛山市'
            }],
            'age': [{
                'value': 17310.933695664866,
                'key': '2'
            }, {
                'value': 13124.377139526998,
                'key': '3'
            }, {
                'value': 10395.74135871393,
                'key': '4'
            }, {
                'value': 7069.604425312497,
                'key': '5'
            }, {
                'value': 8145.887821902274,
                'key': '6'
            }, {
                'value': 3270.4479498348082,
                'key': '7'
            }]
        }],
        [{
            'keyword': '指甲贴女 防水',
            'gender': [{
                'value': 29076.835873001277,
                'key': '女'
            }, {
                'value': 6330.174871735133,
                'key': '男'
            }, {
                'value': 1988.9405095766642,
                'key': '未知'
            }],
            'city': [{
                'value': 4740.767230945541,
                'key': '杭州市'
            }, {
                'value': 4527.678968567187,
                'key': '成都市'
            }, {
                'value': 4083.539175398417,
                'key': '北京市'
            }, {
                'value': 3896.116546636218,
                'key': '重庆市'
            }, {
                'value': 3877.333816901882,
                'key': '广州市'
            }, {
                'value': 3650.550733710077,
                'key': '深圳市'
            }, {
                'value': 3442.8813250563962,
                'key': '贵阳市'
            }, {
                'value': 3417.0492689054295,
                'key': '上海市'
            }, {
                'value': 3387.0155716304453,
                'key': '昆明市'
            }, {
                'value': 3199.8638820847636,
                'key': '西双版纳傣族自治州'
            }, {
                'value': 3153.6540565148402,
                'key': '郑州市'
            }, {
                'value': 2986.0526661667886,
                'key': '西安市'
            }, {
                'value': 2982.917861846187,
                'key': '苏州市'
            }, {
                'value': 2957.228004234543,
                'key': '南京市'
            }, {
                'value': 2771.2558097203064,
                'key': '福州市'
            }, {
                'value': 2738.5050825771605,
                'key': '武汉市'
            }, {
                'value': 2730.477278088705,
                'key': '合肥市'
            }, {
                'value': 2649.9199283094613,
                'key': '济南市'
            }, {
                'value': 2638.958781716227,
                'key': '东莞市'
            }, {
                'value': 2621.926204000027,
                'key': '南宁市'
            }, {
                'value': 2609.710470729388,
                'key': '太原市'
            }, {
                'value': 2521.130146094352,
                'key': '长沙市'
            }, {
                'value': 2389.3318840164616,
                'key': '青岛市'
            }, {
                'value': 2377.859895951222,
                'key': '佛山市'
            }, {
                'value': 2122.3327819241817,
                'key': '南昌市'
            }, {
                'value': 2101.7166091598206,
                'key': '临沂市'
            }, {
                'value': 1879.1078871068285,
                'key': '厦门市'
            }, {
                'value': 1842.5845572453795,
                'key': '长春市'
            }, {
                'value': 1775.5045677502444,
                'key': '宁波市'
            }, {
                'value': 1755.3639693146702,
                'key': '哈尔滨市'
            }],
            'age': [{
                'value': 18149.051789762903,
                'key': '2'
            }, {
                'value': 12998.057081849674,
                'key': '3'
            }, {
                'value': 9638.53897122092,
                'key': '4'
            }, {
                'value': 7096.421542728261,
                'key': '5'
            }, {
                'value': 7413.571624007593,
                'key': '6'
            }, {
                'value': 3234.192254962659,
                'key': '7'
            }]
        }],
        [{
            'keyword': '甲片女成品',
            'gender': [{
                'value': 27731.979766997607,
                'key': '女'
            }, {
                'value': 5846.460824068754,
                'key': '男'
            }, {
                'value': 1326.6286445442238,
                'key': '未知'
            }],
            'city': [{
                'value': 5955.073237502477,
                'key': '北京市'
            }, {
                'value': 4455.840592070389,
                'key': '杭州市'
            }, {
                'value': 4198.843090706716,
                'key': '上海市'
            }, {
                'value': 3867.345986967968,
                'key': '南京市'
            }, {
                'value': 3694.03117860128,
                'key': '西安市'
            }, {
                'value': 3488.591638062343,
                'key': '武汉市'
            }, {
                'value': 3456.8026433883733,
                'key': '济南市'
            }, {
                'value': 3156.0150035518873,
                'key': '郑州市'
            }, {
                'value': 3026.0992677128465,
                'key': '乌鲁木齐市'
            }, {
                'value': 2952.5619680014947,
                'key': '合肥市'
            }, {
                'value': 2813.2208078452722,
                'key': '兰州市'
            }, {
                'value': 2803.81526267157,
                'key': '成都市'
            }, {
                'value': 2704.0381899339086,
                'key': '长沙市'
            }, {
                'value': 2549.9649846148695,
                'key': '太原市'
            }, {
                'value': 2514.5433109150595,
                'key': '昆明市'
            }, {
                'value': 2465.948176297605,
                'key': '深圳市'
            }, {
                'value': 2452.5609663097603,
                'key': '青岛市'
            }, {
                'value': 2440.085180634672,
                'key': '沈阳市'
            }, {
                'value': 2422.244527770016,
                'key': '天津市'
            }, {
                'value': 2368.3197597924254,
                'key': '石家庄市'
            }, {
                'value': 2346.5639092235388,
                'key': '苏州市'
            }, {
                'value': 2328.451755495905,
                'key': '广州市'
            }, {
                'value': 2221.8560259656224,
                'key': '长春市'
            }, {
                'value': 2089.426652113065,
                'key': '南昌市'
            }, {
                'value': 2074.978942024582,
                'key': '哈尔滨市'
            }, {
                'value': 1937.1504851120105,
                'key': '大连市'
            }, {
                'value': 1843.017058577803,
                'key': '贵阳市'
            }, {
                'value': 1821.1716866435831,
                'key': '银川市'
            }, {
                'value': 1698.2776901635557,
                'key': '齐齐哈尔市'
            }, {
                'value': 1686.0584026067568,
                'key': '东莞市'
            }],
            'age': [{
                'value': 19078.75059577443,
                'key': '2'
            }, {
                'value': 11368.662753601362,
                'key': '3'
            }, {
                'value': 7474.931964369943,
                'key': '4'
            }, {
                'value': 6027.692205021734,
                'key': '5'
            }, {
                'value': 6739.785520923235,
                'key': '6'
            }, {
                'value': 1785.4625579105027,
                'key': '7'
            }]
        }],
        [{
            'keyword': '美甲',
            'gender': [{
                'value': 85581.97191975756,
                'key': '女'
            }, {
                'value': 20414.882235566285,
                'key': '男'
            }, {
                'value': 14975.657508701845,
                'key': '未知'
            }],
            'city': [{
                'value': 18092.34624800957,
                'key': '北京市'
            }, {
                'value': 15386.962077226784,
                'key': '杭州市'
            }, {
                'value': 15196.169743399118,
                'key': '上海市'
            }, {
                'value': 13312.89865364876,
                'key': '太原市'
            }, {
                'value': 11484.591126048068,
                'key': '深圳市'
            }, {
                'value': 11413.970301446961,
                'key': '郑州市'
            }, {
                'value': 11085.11320772686,
                'key': '广州市'
            }, {
                'value': 10577.006436166273,
                'key': '成都市'
            }, {
                'value': 10106.203724177736,
                'key': '南京市'
            }, {
                'value': 10083.490809673938,
                'key': '天津市'
            }, {
                'value': 9455.060356280661,
                'key': '青岛市'
            }, {
                'value': 9284.613288897242,
                'key': '济南市'
            }, {
                'value': 9263.903163755407,
                'key': '合肥市'
            }, {
                'value': 9219.350803269826,
                'key': '西安市'
            }, {
                'value': 9126.382238826709,
                'key': '武汉市'
            }, {
                'value': 8717.04874679931,
                'key': '沈阳市'
            }, {
                'value': 8651.887894066605,
                'key': '重庆市'
            }, {
                'value': 8454.280767293356,
                'key': '哈尔滨市'
            }, {
                'value': 8324.839512819666,
                'key': '乌鲁木齐市'
            }, {
                'value': 8106.276245843674,
                'key': '东莞市'
            }, {
                'value': 7705.405584163444,
                'key': '长春市'
            }, {
                'value': 7611.478917596009,
                'key': '长沙市'
            }, {
                'value': 7415.613185594436,
                'key': '大连市'
            }, {
                'value': 7388.703987933512,
                'key': '昆明市'
            }, {
                'value': 7311.041992470653,
                'key': '温州市'
            }, {
                'value': 6970.875262334258,
                'key': '香港特别行政区'
            }, {
                'value': 6879.13370638551,
                'key': '苏州市'
            }, {
                'value': 6666.44310328535,
                'key': '石家庄市'
            }, {
                'value': 6585.272390023538,
                'key': '贵阳市'
            }, {
                'value': 6433.258609456443,
                'key': '无锡市'
            }],
            'age': [{
                'value': 62324.63366308388,
                'key': '2'
            }, {
                'value': 41369.56217862413,
                'key': '3'
            }, {
                'value': 26404.282373664362,
                'key': '4'
            }, {
                'value': 15470.960734742137,
                'key': '5'
            }, {
                'value': 15950.596646589911,
                'key': '6'
            }, {
                'value': 6805.563825797738,
                'key': '7'
            }]
        }]
    ]
    print(crowd_portrait_place(data))
